package com.radroxx.balancelg.balancedata;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.xml.parsers.DocumentBuilderFactory;

/**
 * Created by Rodion on 04.07.13.
 */
public class _GetBalanceDsip implements behaviorBalance  {

    @Override
    public String getData( String login , String password  ){

        try
        {
            String Year = String.valueOf( Calendar.getInstance().get(Calendar.YEAR) );
            String Month = String.valueOf(Calendar.getInstance().get(Calendar.MONTH)+1);
            String Day = String.valueOf( Calendar.getInstance().get(Calendar.DAY_OF_MONTH) );

            URL url = new URL("http://dsip.net/dsip/main.php");

            HttpURLConnection connect = (HttpURLConnection)  url.openConnection();

            connect.setRequestMethod("POST");//Метод передачи запроса
            connect.setConnectTimeout(15000);//для того что бы не зависал при обрывах

            connect.setUseCaches(false);
            connect.setDoInput(true);
            connect.setDoOutput(true);

            //Записываем ссылку на страницу с которой пришли БЕЗ ЭТОГО НЕ РАБОТАЕТ!!!!!
            connect.setRequestProperty("Referer", "http://www.dsip.net/dsip/main.php?page=stat_vpn2&name="+login+"&month="+Month+"&year="+Year);

            //Записываем данные для отправки
            OutputStream out = connect.getOutputStream();
            out.write(("page=3131&name=" + login + "&dayn=" + Day + "&monthn=" + Month + "&yearn=" + Year + "&dayk=" + Day + "&monthk=" + Month + "&yeark=" + Year).getBytes());
            out.flush();
            out.close();

            connect.connect();

            //Проверяем если все нормально считываем страницу
            if( connect.getResponseCode() == 200 )
            {
                System.out.println();

                //В этом блоке выдираем кодировку страницы
                String charSet = null;
                String temp = connect.getContentType();
                int begin = temp.indexOf("charset=");
                if( begin != -1 )
                {
                    begin+=8;
                    int end = temp.indexOf(" ", begin);
                    if( end == -1 ){
                        charSet = temp.substring(begin);
                    }
                    else
                        charSet = temp.substring(begin, end);
                }

                BufferedReader br = null;

                //Берем InputStream с нужной кодировкой
                if( charSet != null )
                    br = new BufferedReader( new InputStreamReader(connect.getInputStream() , charSet) );
                else
                    br = new BufferedReader( new InputStreamReader(connect.getInputStream()) );

                if( br != null )
                {
                    String rez = "";
                    String inl = "";

                    //Вычитывем все данные
                    while( (inl = br.readLine()) != null )
                        rez += inl ;
                    br.close();

                    begin = rez.indexOf("остаток на вашем счету:</b></td>");
                    begin = rez.indexOf("<b>",begin);
                    rez = rez.substring( begin+3 , rez.indexOf("</b>",begin) );
                    if( rez.length() > 12 )
                        rez = rez.substring(0,12);
                    if( rez.indexOf("грн.") > 0 )
                        return rez;
                }
            }
            connect.disconnect();
            return null;
        }
        catch( Exception ex  ){ return null; }
    }
    @Override
    public boolean getIsLogin(){ return true; }
    @Override
    public boolean getIsPassword(){ return false; }
    @Override
    public String findLogin(){
        try
        {
            URL url = new URL("http://dsip.net/dsip/main.php");

            HttpURLConnection connect = (HttpURLConnection)  url.openConnection();

            connect.setRequestMethod("GET");//Метод передачи запроса
            connect.setConnectTimeout(15000);//для того что бы не зависал при обрывах

            connect.setUseCaches(false);
            connect.setDoInput(true);
            connect.setDoOutput(true);

            //Записываем данные для отправки
            OutputStream out = connect.getOutputStream();
            out.write(("page=stat_vpn").getBytes());
            out.flush();
            out.close();

            connect.connect();

            //Проверяем если все нормально считываем страницу
            if( connect.getResponseCode() == 200 )
            {
                System.out.println();

                //В этом блоке выдираем кодировку страницы
                String charSet = null;
                String temp = connect.getContentType();
                int begin = temp.indexOf("charset=");
                if( begin != -1 )
                {
                    begin+=8;
                    int end = temp.indexOf(" ", begin);
                    if( end == -1 ){
                        charSet = temp.substring(begin);
                    }
                    else
                        charSet = temp.substring(begin, end);
                }

                BufferedReader br = null;

                //Берем InputStream с нужной кодировкой
                if( charSet != null )
                    br = new BufferedReader( new InputStreamReader(connect.getInputStream() , charSet) );
                else
                    br = new BufferedReader( new InputStreamReader(connect.getInputStream()) );

                if( br != null )
                {
                    String rez = "";
                    String inl = "";

                    //Вычитывем все данные
                    while( (inl = br.readLine()) != null )
                        rez += inl ;
                    br.close();

                    begin = rez.indexOf("<input type=\"hidden\" name=\"name\" value=\"");
                    if(begin > 0)
                        return rez.substring(begin+40,rez.indexOf("\">",begin+40));
                }
            }
            connect.disconnect();
            return null;
        }
        catch( Exception ex  ){ return null; }
    }
}
